// 通知相关类型定义 - 与后端Notification模型保持一致

// 通知实体 - 与后端Notification模型完全对应
export interface Notification {
  id?: number                   // 后端: Integer id，JSON序列化为number
  userId?: number               // 后端: Integer userId，JSON序列化为number
  title: string
  content: string
  type: number                  // 通知类型
  level: number                 // 通知级别
  isRead: number                // 是否已读 0-未读 1-已读
  readTime?: string             // 后端: LocalDateTime，JSON序列化为ISO字符串
  relatedId?: number            // 后端: Integer，JSON序列化为number
  relatedType?: string          // 关联类型
  actionUrl?: string            // 操作链接
  extraData?: string            // 额外数据(JSON格式)
  expireTime?: string           // 后端: LocalDateTime，JSON序列化为ISO字符串
  isDel: number                 // 是否删除 0-正常 1-删除
  createdTime: string           // 后端: LocalDateTime，JSON序列化为ISO字符串
  updatedTime: string           // 后端: LocalDateTime，JSON序列化为ISO字符串
}

// 通知分页响应
export interface NotificationPageResponse {
  records: Notification[]
  total: number
  current: number
  size: number
  pages: number
}

// 订单状态变更DTO
export interface OrderStatusDTO {
  orderId: number               // 后端: Long，JSON序列化为number
  userId: number                // 后端: Long，JSON序列化为number
  oldStatus: string
  newStatus: string
  orderNo: string
}

// 价格变更DTO
export interface PriceChangeDTO {
  productId: number             // 后端: Long，JSON序列化为number
  productName: string
  oldPrice: number              // 后端: BigDecimal，JSON序列化为number
  newPrice: number              // 后端: BigDecimal，JSON序列化为number
  changeReason: string
}

// 安全警报DTO
export interface SecurityAlertDTO {
  userId: number                // 后端: Long，JSON序列化为number
  alertType: string
  description: string
  ipAddress?: string
  userAgent?: string
}

// 系统通知DTO
export interface SystemAlertDTO {
  title: string
  content: string
  level: number
  targetType: number            // 目标用户类型：0-所有人, 1-所有用户, 2-所有会员等
}

// 通知类型枚举
export enum NotificationType {
  SYSTEM = 1,
  ORDER = 2,
  PRODUCT = 3,
  SECURITY = 4
}

// 通知级别枚举
export enum NotificationLevel {
  NORMAL = 1,
  IMPORTANT = 2,
  URGENT = 3
} 